package com.park.controller;


import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpResponse;
import com.park.comm.ResultEnum;
import com.park.exception.CommException;
import com.park.json.ResultUtil;
import com.park.response.Result;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @ClassName BaseController
 * @Description 基本Controller
 * @Author zhanghaiwen
 * @Date 2020/1/9 14:46
 * @Version 6.1.1
 **/
public class BaseController {

    /**
     * request
     */
    @Autowired
    public HttpServletRequest request;

    @Autowired
    public HttpServletResponse response;

    public Integer getUserId(){
        if(ObjectUtil.isNotEmpty(request.getAttribute("userId"))){
            return Integer.valueOf(request.getAttribute("userId").toString());
        }
        throw new CommException(ResultEnum.SYS_ERROR);
    }

    //访问成功
    public Result SUCCESS(){
        return ResultUtil.SUCCESS();
    }

    //访问成功带参数
    public Result SUCCESS(Object object){
        return ResultUtil.SUCCESS(object);
    }

    /**
     * @Author : JCccc
     * @CreateTime : 2018-11-23
     * @Description :
     * @Point: Keep a good mood
     **/
    public String getIpAddr() {
        String ipAddress = null;
        try {
            ipAddress = request.getHeader("x-forwarded-for");
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getRemoteAddr();
                if (ipAddress.equals("127.0.0.1")) {
                    // 根据网卡取本机配置的IP
                    InetAddress inet = null;
                    try {
                        inet = InetAddress.getLocalHost();
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    }
                    ipAddress = inet.getHostAddress();
                }
            }
            // 对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割
            if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
                // = 15
                if (ipAddress.indexOf(",") > 0) {
                        ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
                    }
                }
            } catch (Exception e) {
                ipAddress="";
            }
            return ipAddress;
        }
}
